package com.itheima.reggie.mapper;

import com.itheima.reggie.dto.DishDto;
import com.itheima.reggie.entity.Dish;
import org.apache.ibatis.annotations.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface DishMapper {
    /**
     * mapper的方法添加@param注解在什么情况需要添加：
     *      1. mapper方法是有多个参数的时候（两个以及两个以上的参数需要添加）
     *      2. mapper方法只有一个参数，并且这个参数是简单类型，而且你还使用了动态sql也是需要使用@Param
     *      3. mapper方法只有一个参数，参数是引用类型，也使用了动态sql，不需要添加。
     *      4. 遍历map或者list集合,数组的时候也是需要添加的。
     *
     * @param id
     * @return
     */
    @Select("SELECT COUNT(*) FROM dish WHERE category_id=#{categoryId}")
    long findDishCountByCategoryId(long id);
    @Insert("Insert into dish values(null,#{name},#{categoryId},#{price},#{code},#{image},#{description},#{status},#{sort},#{createTime},#{updateTime },#{createUser},#{updateUser},0)")
    //通知mybatis插入数据之后，把id列的值设置给实体类的id属性
    @Options(useGeneratedKeys = true,keyColumn = "id",keyProperty = "id")
    void save(DishDto dishDto);
    //根据名字查找菜品
    List<Dish> findByName(@Param("name") String name);
    //根据id查找彩屏
    @Select("SELECT * FROM dish WHERE id=#{id}")
    Dish findById(Long id);
    //根据id修改菜品
    void updateById(DishDto dishDto);
    //根据菜品类别id查询菜品
    List<Dish> findBycategoryId(@Param("categoryId") Long categoryId, @Param("status") Integer status);
    //检查菜品是否有在售商品
    Long queryWithStatus(@Param("ids") List<Long> ids);
    //删除停售菜品
    void DeleteByIds(@Param("ids") List<Long> ids);
    /*批量停售*/
    void updateStatusByIds(@Param("ids") List<Long> ids, @Param("status") Integer status);

}
